var fs=require('fs');

// var path='./04 node中的fs模块/upload';
// fs.stat(path,(err,stats)=>{
//     if(err){
//         fs.mkdir(`${path}`,(error)=>{
//             if(error) throw err;
//             console.log("创建成功");
//         })
//     }else{
//         console.log('目录已存在');
//         console.log(stats.isDirectory());
//     }
// });

//循环判断指定目录下的哪些是目录哪些是文件
var path='./04 node中的fs模块';
var filesArr=[];
fs.readdir(`${path}/html`,(err,files)=>{
    if(err)throw err;
    // for(var i=0;i<files.length;i++){
    //     fs.stat(files[i],function(err,stats){//这种是错误的写法，因为fs.stat方法是异步的，所以循环已经结束了i的值为数组的长度，其实是作用域的问题、var会存在变量提升，把var改成es6的let也能解决
    //         console.log(files[i]);
    //     });
    // }

    // (function getFile(i){ //第二种写法，使用自执行函数跟递归调用
    //     if(i==files.length){//循环结束
    //         console.log('目录:');
    //         console.log(filesArr);//打印出所有目录
    //         return false;
    //     }
    //     fs.stat(`${path}/html/${files[i]}`,function(error,stats){
    //         if(stats.isDirectory()){/*目录 */
    //             filesArr.push(files[i]);
    //         }
            
    //         //递归调用
    //         getFile(i+1);
    //     })
    // })(0)

    for(var i=0;i<files.length;i++){ //利用闭包跟自执行函数原理，其实是作用域的问题、var会存在变量提升
        (function(i){
            fs.stat(`${path}/html/${files[i]}`,(error,stats)=>{
                if(stats.isDirectory()){
                    filesArr.push(files[i]);
                    console.log(filesArr);
                }
            })
        })(i)
    }
    
});